SAFE Logo
CodeMatch Detailed Report
Version: 5.7.2 | Date: 08/27/16 | Time: 18:43:56

SCORE

SETTINGS
Compare file 1: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\CCP.asm
To file 2: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\CCP.asm
Links to results: Matching Statements
Matching Comments and Strings
Matching Instruction Sequences
Matching Identifiers
Partially Matching Identifiers
Score
RESULTS
Matching Statements
File1 Line# File2 Line# Statement
22BIAS EQU 800H
88FALSE EQU 8000H
99TRUE EQU NOT FALSE
1010TESTING EQU FALSE
1111CCPLOC EQU BIAS
1212BDOSL EQU 900H+BIAS
1515IF TESTING
1616ORG 100H
17
309
17
309
MVI C, 0
1818TRAN EQU 81000H
1919TRANM EQU 1400H
2222IF NOT TESTING
2323ORG CCPLOC
2424TRAN EQU 100H
2525TRANM EQU $
2828JMP CCPSTART
3131DISKA EQU 0004H
3232BDOS EQU 0005H
3333BUFF EQU 0080H
3434FCB EQU 005CH
3636RCHARF EQU 1
3737PCHARF EQU 2
3838PBUFF EQU 9
3939RBUFF EQU 10
4040BREAKF EQU 11
4141LIFTF EQU 12
4242INITF EQU 13
4343SELF EQU 14
4444CPENF EQU 15
4545CLOSEF EQU 16
4646SEARF EQU 17
4747SEARNF EQU 18
4848DELF EQU 19
4949DREADF EQU 20
5050DWRITF EQU 21
5151MAKEF EQU 22
5252RENF EQU 23
5353LOGF EQU 24
5454CSELF EQU 25
5555DMAF EQU 26
5757CR EQU 13
5858LF EQU 10
5959LA EQU 5FH
6060EOFILE EQU 1AH
6161NDISKS EQU 2
6464PRINTCHAR: MOV E, A
6464MVI C, PCHARF
64
75
77
99
114
165
168
174
64
75
77
99
114
165
168
174
JMP BDOS
6666PRINTBC:
67
73
342
67
73
342
PUSH B
67
69
196
504
67
69
196
504
CALL PRINTCHAR
67
343
348
67
343
348
POP B
6969CRLF: MVI A, CR
7070MVI A, LF
7070JMP PRINTCHAR
7272PRINT:
73
191
200
356
439
492
627
73
191
200
356
439
492
627
CALL CRLF
73
523
536
594
73
523
536
594
POP D
7373MVI C, PGUFF
7373JMP SDOS
7575INITIALIZE: MVI C, INITF
7777SELECT: MOV E, A
7777MVI C, SELF
7979OPEN:
8080MVI C, OPENF
80
87
90
93
102
108
111
139
145
159
161
80
87
90
93
102
108
111
139
145
159
161
CALL BDOS
80
87
90
93
80
87
90
93
STA DCNT
80
87
90
93
349
80
87
90
93
349
INR A
8282OPENC:
83
179
231
417
499
570
614
83
179
231
417
499
570
614
XRA A
83
614
83
614
STA COMREC
84
96
105
482
522
535
543
574
601
84
96
105
482
522
535
543
574
601
LXI D, COMFCB
8484JMP OPEN
8686CLOSE:
8787MVI C, CLOSEF
8989SEARCH:
9090MVI C, SEARF
9292SEARCHN:
9393MVI C, SEARNF
9595SEARCHCOM:
9696JMP SEARCH
9898DELETE:
9999MVI C, DELF
101101DISKREAD:
102102MVI C, DREADF
102
108
123
126
138
149
160
162
177
195
207
220
238
296
331
362
418
422
514
566
589
618
622
102
108
123
126
138
149
160
162
177
195
207
220
238
296
331
362
418
422
514
566
589
618
622
ORA A
104104DISKREADC:
105105JMP DISKREAD
107107DISKWRITE:
108108MVI C, DWRITF
110110MAKE:
111111MVI C, MAKEF
111111STA DCHT
113113RENAM:
114114MVI C, RENF
116116TRANSLATE:
117117CPI 61H
118118CPI 78H
119119ANI 5FH
121121READCOM:
123123LDA SUBMIT
123
136
123
136
JZ NOSUB
126
138
181
424
629
633
126
138
181
424
629
633
LDA CDISK
126
228
126
228
MVI A, 0
126
138
126
138
CNZ SELECT
127127LDA SUBRC
127
419
423
509
590
608
127
419
423
509
590
608
DCR A
128128STA SUBCR
129
136
180
333
129
136
180
333
LXI D, SUBFCB
129
601
129
601
CALL DISKREAD
130130JNZ NOSUB
132132LXI D, COMLEN
132
414
502
132
414
502
LXI H, BUFF
132132MVI 8, 128
132
556
615
132
556
615
CALL MOVE0
135135LXI H, SUBRC
135
475
135
475
DCR M
136
543
136
543
CALL CLOSE
139139MVI C, PBUFF
139139LXI D, COMBUF
140
462
505
140
462
505
CALL BREAK$KEY
140140JZ NOREAD
141
200
141
200
CALL DEL$SUB
141
201
634
654
141
201
634
654
JMP CCP
143143NOSUB:
145145MVI C, RBUFF
145145LXI D, MAXLEN
146146NOREAD:
148
475
148
475
LXI H, COMLEN
148148MOV B, M
149149READCOM0: INX H
149
247
296
395
405
455
626
149
247
296
395
405
455
626
MOV A, B
150150JZ READCOM1
150
177
194
292
367
403
414
430
476
494
503
566
611
613
150
177
194
292
367
403
414
430
476
494
503
566
611
613
MOV A, M
151151CALL TRANSLATE
151
154
171
244
273
499
151
154
171
244
273
499
MOV M, A
151
186
287
324
410
434
151
186
287
324
410
434
DCR B
151151JMP READCOM0
153153READCOM1:
155
617
155
617
LXI H, COMBUF
155
288
478
561
155
288
478
561
SHLD COMADDR
158158BREAK$KEY:
159159MVI C, BREAKF
161161MVI C, RCHARF
164164LIFTHEAD:
165165MVI C, LIFTF
167167CSELECT:
168168MVI C, CSELF
170170MOVE:
171
207
220
238
240
320
593
171
207
220
238
240
320
593
LDAX D
171
186
221
240
248
261
267
273
279
316
409
624
171
186
221
240
248
261
267
273
279
316
409
624
INX D
171
186
253
269
282
316
324
367
392
404
409
476
478
561
619
624
171
186
253
269
282
316
324
367
392
404
409
476
478
561
619
624
INX H
171
400
404
171
400
404
DCR C
171171JNZ MOVE
173173SETDMA:
174174MVI C, DMAF
176176DEL$SUB:
177177LXI H, SUBMIT
178
287
178
287
MVI M, 0
179
346
591
633
179
346
591
633
CALL SELECT
180
482
522
180
482
522
CALL DELETE
181
424
181
424
JMP SELECT
183183SERIALIZE:
184184LXI D, SERIAL
184184LXI H, BDOSL
184184MVI B, 6
185185SER0: LDAX D
185
314
419
423
185
314
419
423
CMP M
185185JNZ BADSERIAL
186186JNZ SERB
189189COMERR:
192192LHLD STADDR
193193COMERR0:
194194CPI JZ COMERR1
195195JZ COMERR1
196
230
230
495
532
533
610
196
230
230
495
532
533
610
PUSH H
196
236
291
497
536
603
613
196
236
291
497
536
603
613
POP H
196196INK X
197197JMP COMERR0
198198COMERR1:
199
358
442
443
199
358
442
443
MVI A, CALL PRINTCHAR
206206DELIM:
208208CPI JC COMERR
211
560
211
560
CPI LA
219219DEBLANK:
221221JMP DEBLANK
223223ADDH:
224224ADD L
224
367
527
224
367
527
MOV L, A
225225IHR H
227227FILLFCB0:
230230FILLFCB: LXI H, COMFCB
230
414
502
230
414
502
CALL ADDH
231
247
231
247
STA SDISK
233
558
233
558
LHLD COMADDR
234
558
234
558
CALL DEBLANK
235235SHLD STADDR
238238JZ SETCUR0
239239SBI -1
239
400
565
239
400
565
MOV B, A
240240CPI JZ SETDSK
242242SETCUR:
243243DCX D
244244SETCUR0: LDA CDISK
244244JMP SETNAME
246246SETDSK:
248
568
248
568
MOV M, B
250250SETNAME:
251251MVI B, 8
252252SETNAM0: CALL DELIM
252252JZ PADNAME
253253CPI JNZ SET NAM1
254254MVI M, JMP SETNAM2
256256SETNAM1: MOV M, A
257257SETNAM2: DCR B
260260TRNAME: CALL DELIM
260260JZ SETTY
261261JMP TRNAME
263263PADNAME: INX H
263
282
263
282
MVI M, DCR B
263263JNZ PADNAME
265265SETTY:
266
286
408
266
286
408
MVI B, 3
266266CPI JNZ PADTY
268268SETTY0:
269
279
269
279
CALL DELIM
269269JZ PADTY
269269CPI JNZ SETTY1
270
479
270
479
MVI M,
272272SETTY1:
274274SETTY2:
275
316
275
316
DCR 0
275275JNZ SETTY0
278278TRTYP:
279279JZ EFILL
279279JMP TRTYP
281281PADTY:
282282JNZ PADTY
284284EFILL:
287287EFILL0: INX H
287287JNZ EFILL0
291
388
291
388
LXI B, 11
292292SCNQ: INX H
292292CPI JNZ SCNQ0
298298INTVEC:
304304INTLEN EQU ($-INTVEC)/4
305305SERIAL: DB 0, 0, 0, 0, 0
308308INTRINSIC:
309309LXI H, INTVEC
310310INTRIN0: MOV A, C
310310CPI INTLEN
312312LXI D, COMFCB+1
313313MVI B, 4
314314INTRIN1:LDAX D
315
324
315
324
JNZ INTRIN2
317317JNZ INTRIN1
320320CPI JNZ INTRIN3
321
345
321
345
MOV A, C
323323INTRIN2:
326326INTRIN3:
327327INR C
328328JMP INTRIN0
330330CHECKSUB:
331331JNZ SETSUB0
333333CALL OPEN
333333JZ SETSUB0
335335MVI A, 0FFH
335335JMP SETSUB
337337SETSUB0: XRA A
338338SETSUB: STA SUBMIT
341341CCPSTART:
342
355
632
342
355
632
LXI SP, STACK
342342PUSH 8
343343CALL INITIALIZE
352352CALL CHECKSUB
354354CCP:
357
441
357
441
CALL CSELECT
357
590
357
590
STA CDISK
357
441
357
441
ADI CALL PRINTCHAR
359
630
359
630
LXI D, BUFF
359
534
600
630
359
534
600
630
CALL SETDMA
360
474
360
474
CALL READCOM
360
428
488
519
550
563
610
360
428
488
519
550
563
610
CALL FILLFCB0
361361CNZ COMERR
362
418
422
514
551
589
362
418
422
514
551
589
LDA SDISK
362362JNZ USERFUNC
364364CALL INTRINSIC
365365LXI H, JMP TAB
366366MOV E, A
366366MVI D, 0
366
366
603
366
366
603
DAD D
367367MOV H, M
369369JMPTAB: DW DIRECT
370370DW ERASE
371371DW TYPE
372372DW SAVE
373373DW RENAME
374374DW USERFUNC
375375BADSERIAL: LXI H, DI OR (HLT $HL 0)
376376SHLD CCPLOC
376376LXI H, CCPLOC
379379READERR:
380380LXI B, RDMSG
380
384
380
384
JMP PRINT
381381RDMSG: DB
383383NOFILE:
384384LXI B, NOFMSG
385385NOFMSG: DB
387387CONVERT:
388
430
388
430
LXI H, COMFCB+1
390390CONV0: MOV A, M
390390CPI JZ CONV1
392392SUI CPI 10
392392JNC COMERR
393393MOV D, A
394394ANI 1110$0000B
394
488
514
520
550
653
394
488
514
520
550
653
JNZ COMERR
397
398
397
398
ADD B
397
398
399
397
398
399
JC COMERR
399399ADD D
400400JNZ CONV0
402402CONV1:
403
593
403
593
CPI JNZ COMERR
404404JNZ CONV1
407407MOVENAME:
409409MOVE0: MOV A, M
409
622
409
622
STAX D
410410JNZ MOVE0
413413ADDHCF:
414414ADD C
416416SETDISK:
417
570
611
417
570
611
STA COMFCB
419
423
419
423
LXI H, CDISK
421421RESETDISK:
427427DIRECT:
429
489
521
552
594
429
489
521
552
594
CALL SETDISK
431431CPI JNZ DIR1
433433MVI B, 11
434434DIR0: MVI M, INX H
434434JNZ DIR0
436436DIR1: CALL SEARCHCOM
437437CZ NOFILE
438438DIR2: JZ ENDIR
445445LDA DCNT
446446ANI 110$0000B
446446MOV C, A
448448MVI B, 1
449449DIR3: MOV A, B
449
452
449
452
CALL ADDHCF
451451CPI JNZ DIR4
452452MVI A, 9
453453MVI A, CMP M
453453JZ DIR5
454454DIR4: CALL PRINTBC
455
624
455
624
INR B
455455CPI 12
455455JNC DIR5
457457CPI 9
457457JNZ DIR3
459459MVI A, CALL PRINTBC
459459JMP DIR3
461461DIR5:
463463JNZ ENDIR
464464CALL SEARCHN
464464JMP DIR2
465465ENDIR:
466
483
575
578
582
641
466
483
575
578
582
641
JMP RET COM
469469ERASE: CALL FILLFCB0
470470CPI 11
471471JNZ ERASEFILE
473473LXI B, ERMSG
473
541
545
582
640
473
541
545
582
640
CALL PRINT
475475JNZ CCP
476476CPI JNZ CCP
479
556
615
479
556
615
LXI H, COMFCB
481481ERASEFILE: CALL SETDISK
485485ERMSG: DB
487487TYPE:
489
524
596
489
524
596
CALL OPENC
490490JZ TYPERR
492
494
492
494
LXI H, BPTR
492492MVI M, 255
493493TYPE0:
494494CPI 128
495495JC TYPE1
497497CALL DISKREADC
498498JNZ TYPEOF
500500TYPE1:
501501INR M
503503CPI EOFILE
503
509
503
509
JZ RETCOM
505505JNZ RETCOM
506506JMP TYPE0
508508TYPEOF:
510510CALL READERR
511511TYPERR: CALL RESETDISK
511
580
637
511
580
637
JMP COMERR
513513SAVE: CALL FILLFCB0
515515CALL CONVERT
522
594
522
594
PUSH D
523523CALL MAKE
525525JZ SAVERR
527527MVI H, 0
527527DAD H
528528LXI D, TRAN
529529SAVE0:
530
605
530
605
MOV A, H
530530ORA L
530530JZ SAVE1
531531DCX H
533533LXI H, 128
533533DAD C
535535CALL DISKWRITE
537537JNZ SAVERR
538538JMP SAVE0
540540SAVERR:
541541LXI B, FULLMSG
542542SAVE1:
544544JNZ SAVE2
545545LXI B, CLOSMSG
546546SAVE2: JMP RETCOM
547547FULLMSG: DB
548548CLOSMSG: DB
549549RENAME:
553
570
553
570
CALL SEARCHCOM
554554JNZ RENERR3
556556LXI D, COMFCB+16
556556MVI B, 16
559559CPI JZ REN1
560
563
568
560
563
568
JNZ RENERR2
561561REN1: XCHG
566
610
566
610
LXI H, SDISK
566566JZ REN2
568568CMP B
569569REN2: MOV M, B
571571JZ RENERR1
574574CALL RENAM
577577RENERR1:
578578CALL NOFILE
579579RENERR2:
580580
609
637
647
CALL rESETDISK
581581RENERR3:
582582LXI B, RENMSG
583583RENMSG: DB
585585USERFUNC: CALL SERIALIZE
587
651
587
651
LDA COMFCB+1
587587CPI JNZ USER0
589589JZ ENDCOM
590
629
590
629
STA DISKA
591591JMP ENDCOM
592592USER0:
593593LXI D, COMFCB+9
594594LXI H, COMTYPE
595595CALL MOVENAME
596596JZ USERER
598598LXI H, TRAN
599599LOAD0: PUSH H
601601JNZ LOAD1
603603LXI D, 128
604604LXI D, TRANM
605605MOV A, L
605605SUB E
605605SBB D
605605JNC LOADERR
606606JMP LOAD0
608608LOAD1: POP H
608608JNZ LOADERR
609
637
647
580
609
637
647
CALL RESETDISK
612612MVI A,16
612612CALL FILLFCB
613613STA COMFCB+16
615615LXI D, FCB
615615MVI B, 33
618618BMOVE0: MOV A, M
618618JZ BMOVE1
618618CPI JZ BMOVE1
619619JMP BMOVE0
621621BMOVE1: MVI B, 0
621621LXI D, BUFF+1
622622BMOVE2: MOV A, M
622622JZ BMOVE3
624624JMP BMOVE2
625625BMOVE3:
626626STA BUFF
630630CALL LIFTHEAD
631631CALL TRAN
636636USERER:
639639LOADERR:
640640LXI B, LOADMSG
642642LOADMSG: DB
643643COMTYPE: DB
646646RETCOM:
649649ENDCOM:
650650CALL FILLFGB0
651651SUI LXI H, SDISK
651651ORA M
659
667
659
667
DS 16
660660STACK:
663663SUBMIT: DB 0
664664SUBFCB: DB 0,
665665DB , 0, 0, 0
666666SUBRC: DS 1
668668SUBCR: DS 1
671671COMFCB: DS 32
672672COMREC: DS 1
675675MAXLEN: DB 1 7
676676COMLEN: DB 0
677677COMBUF: DS 128
678678COMADDR:DS 2
679679STADDR: DS 2
681681DCNT: DS 1
682682CDISK: DS 1
683683SDISK: DS 1
685685SPTR: DS 1
686686END CCPLOC

to top

Matching Comments and Strings
File1 Line# File2 Line# Comment/String
11ASSEMBLY LANGUAGE VERSION OF THE CP/M CONSOLE COMMAND PROCESSOR
33VERSION, 1.1 OCTOBER, 1976
55COPYRIGHT (C) 1976
66DIGITAL RESEARCH
1010TRUE IF DEBUGGING
1111BASE ADDRESS OF CCP
1212BASE OF DOS
1818TRANSIENT PROGRAM AREA BASE (TPA)
1919LAST TRANSIENT LOCATION + 1
2929COPYRIGHT (C) 1976, DIGITAL RESEARCH
3131DISK ADDRESS FOR CURRENT DISK
3232PRIMARY BDOS ENTRY POINT
3333DEFAULT BUFFER
3434DEFAULT FILE CONTROL BLOCK
3636READ CHARACTER FUNCTION
3737PRINT CHARACTER FUNCTION
3838PRINT BUFFER FUNCTION
3939READ BUFFER FUNCTION
4040BREAK KEY FUNCTION
4141LIFT HEAD FUNCTION, (SHUGART SA3900 ONLY)
4242INITIALIZE BDOS FUNCTION
4343SELECT DISK FUNCTION
4444OPEN FILE FUNCTION
4545CLOSE FILE FUNCTION
4646SEARCH FOR FILE FUNCTION
4747SEARCH FOR NEXT FILE FUNCTION
4848DELETE FILE FUNCTION
4949DISK READ FUNCTION
5050DISK WRITE FUNCTION
5151FILE MAKE FUNCTION
5252RENAME FILE FUNCTION
5353RETURN LOGIN VECTOR
5454RETURN CURRENTLY SELECTED DRIVE NUMBER
5555SET DMA ADDRESS
5757CARRIAGE RETURN
5858LINE FEED
59
211
59
211
LEFT ARROW
6060END OF FILE
6161NUMBER OF DISKS
6363UTILITY PROCEDURES
6666PRINT CHARACTER, BUT SAVE B,C REGISTERS
7272PRINT STRING STARTING AT B,C UNTIL NEXT DOLLAR SYMBOL
7979OPEN THE FILE GIVEN, BY D,E
8282OPEN COMFCB
8383CLEAR NEXT RECORD TO READ
8686CLOSE THE FILE GIVEN BY D,E
8989SEARCH FOR THE FILE GIVEN BY D,E
9292SEARCH FOR THE NEXT OCCURRENCE OF THE FILE GIVEN BY D,E
9595SEARCH FOR COMFCB FILE
9898DELETE THE FILE GIVEN BY D,E
101101READ THE NEXT RECORD FROM THE FILE GIVEN BY D,E
104104READ THE COMFCB FILE
107107WRITE THE NEXT RECORD TO THE FILE GIVEN BY D,E
110110CREATE THE FILE GIVEN BY D,E
113113RENAME THE FILE GIVEN BY D,E
116116TRANSLATE CHARACTER IN REGISTER A TO UPPER CASE
117117RETURN IF BELOW LOWER CASE A
118118RETURN IF ABOVE LOWER CASE Z
119119TRANSLATED TO UPPER CASE
121121READ THE NEXT COMMAND INTO THE COMMAND BUFFER
122122CHECK FOR SUBMIT FILE
124124SCANNING A SUBMIT FILE
125125CHANGE DRIVES TO OPEN AND READ THE FILE
127127READ LAST RECORD(S) FIRST
128
668
128
668
CURRENT RECORD TO READ
129129END OF FILE IF LAST RECORD
131131DISK READ IS OK, TRANSFER TO COMBUF
133133LINE IS TRANSFERRED, CLOSE THE FILE WITH A
134134DELETED RECORD
135135ONE LESS RECORD
137137CLOSE WENT OK, RETURN TO ORIGINAL DRIVE
141141BREAK KEY DEPRESSED
143143NO SUBMIT FILE! CALL DEL$SUB
144144TRANSLATE TO UPPER CASE, STORE ZERO AT END
146146ENTER HERE FROM SUBMIT FILE
147147SET THE LAST CHARACTER TO ZERO FOR LATER SCANS
148148LENGTH IS IN B
149149END OF SCAN?
150150GET CHARACTER AND TRANSLATE
153153END OF SCAN, H,L ADDRESS END OF COMMAND
154154STORE A ZERO
155155READY TO SCAN TO ZERO
158158CHECK FOR A CHARACTER READY AT THE CONSOLE
161161CHARACTER CLEARED
164164LIFT THE HEAD ON THE SA3900
167167GET THE CURRENTLY SELECTED DRIVE HUMBER TO REG-A
170170MOVE DATA FROM D, E TO H,L FOR C BYTES
173173SET DMA ADDRESS TO D,E
176176DELETE THE SUBMIT FILE, AND SET SUBMIT FLAG TO FALSE
177177RETURN IF NO SUB FILE
178178SUBMIT FLAG IS SET TO FALSE
179179ON DRIVE A TO ERASE FILE
181181BACK TO ORIGINAL DRIVE
183
585
183
585
CHECK SERIALIZATION
184184CHECK SIX BYTES
187187SERIAL NUMBER IS OK
189189ERROR IN, COMMAND STRING STARTING AT POSITION
190190'STADDR' AND ENDING WITH FIRST DELIMITER
191191SPACE TO NEXT LINE
192192H,L ADDRESS FIRST TO PRINT
193193PRINT CHARACTERS UNTIL BLANK OR ZERO
194194NOT BLANK
195195NOT ZERO, SO PRINT IT
197
506
197
506
FOR ANOTHER CHARACTER
198198PRINT QUESTION, MARK, AND DELETE SUB FILE
201201RESTART WITH NEXT COMMAND
203203FCB SCAN, AND FILL SUBROUTINE (ENTRY IS AT FILLFCB BELOW)
204204FILL THE COMFCB, INDEXED BY A (0 OR 16)
205205SUBROUTINES
206206LOOK FOR A DELIMITER
207207NOT THE LAST ELEMENT
208208NON GRAPHIC
209209TREAT BLANK AS DELIMITER
217217DELIMITER NOT FOUND
219219DEBLANK THE INPUT LINE
220220TREAT END OF LINE AS BLANK
223223ADD A TO H,L
227227EQUIVALENT TO FILLFCB(0)
230230FCB RESCANNED AT END
231231CLEAR SELECTED DISK (IN CASE A;...)
233233COMMAND ADDRESS IN D,E
234234TO FIRST NON-BLANK CHARACTER
235235IN CASE OF ERRORS
236236D,E HAS COMMAND, H, L HAS FCB ADDRESS
237237LOOK FOR PRECEDING FILE NAME A, B: ...
238238USE CURRENT DISK IF EMPTY COMMAND
239239DISK NAME HELD IN B IF : FOLLOWS
240240SET DISK NAME IF ,
242242SET CURRENT DISK
243243BACK TO FIRST CHARACTER OF COMMAND
246246SET DISK TO NAME IN REGISTER B
247247MARK AS DISK SELECTED
248248PAST THE ,
250250SET THE FILE NAME FIELD
251251FILE NAME LENGTH (MAX)
252252NOT A DELIMITER
253253MUST BE 7'S
254254TO DEC COUNT
256256STORE CHARACTER TO FCB! INX D
257257COUNT DOWN, LENGTH! JNZ SETNAM0
259259END OF NAME, TRUNCATE REMAINDER
260260SET TYPE FIELD IF DELIMITER
265265SET THE TYPE FIELD
266266SKIP THE TYPE FIELD IF NO
267267PAST THE , TO THE FILE TYPE FIELD
268268SET THE FIELD FROM THE COMMAND BUFFER
270270SINCE * SPECIFIED! JMP SETTY2
272272NOT A *, SO COPY TO TYPE FIELD
274274DECREMENT COUNT AND GO AGAIN
277277END OF TYPE FIELD, TRUNCATE
278278TRUNCATE TYPE FIELD
281281PAD THE TYPE FIELD WITH BLANKS
284284END OF THE FILENAME/FILETYPE FILL, SAVE COMMAND ADRESS
285285FILL THE REMAINING FIELDS FOR THE FCB
288288SET NEW STARTING POINT
290290RECOVER THE START ADDRESS OF THE FCB AND COUNT 7'$
291291B=0, C=8+3
293293? FOUND, COUNT IT IN, B! INR B
295295NUMBER OF ?'S IN C, MOVE TO A AND RETURN, WITH FLAGS
298298INTRINSIC FUNCTION, NAMES (ALL ARE FOUR CHARACTERS)
299299DIR
300300ERA
301301TYPE
302302SAVE
303303REN
304304INTRINSIC FUNCTION, LENGTH
308308LOOK FOR INTRINSIC FUNCTIONS (COMFCB HAS BEEN FILLED)
309309C COUNTS INTRINSICS AS SCANNED
310310DONE WITH SCAN?!! RNC
311311N0, MORE TO SCAN
312312BEGINNING OF NAME
313313LENGTH OF MATCH IS IN B
314314MATCH?
315315SKIP IF NO MATCH
317317LOOP WHILE MATCHING
319319COMPLETE MATCH ON NAME, CHECK FOR BLANK IN FCB
320320OTHERWISE MATCHED
321321WITH INTRINSIC NUMBER IN A
323323MISMATCH, MOVE TO END OF INTRINSIC
326326TRY NEXT INTRINSIC
327327TO NEXT INTRINSIC NUMBER
328328FOR ANOTHER ROUND
330330CHECK FOR A SUBMIT FILE (REGISTER A HAS DISK NAME)
331331CLEAR SUBMIT IF NOT DISK A
332332OPEN SUBMIT FILE - IF POSSIBLE
334334SUBMIT FILE OPENED, SET SUBMIT TO TRUE
337337CLEAR SUBMIT VARIABLE
341341ENTER HERE FROM BOOT LOADER
342342SAVE INITIAL DISK NUMBER
343343RECOVERED DISK NUMBER TO C
344344SAVE $ FLAG FROM INITIALIZATION, (00 IF NO $ FILE)
345345DISK NUMBER IN ACCUMULATOR
346346PROPER DISK IS SELECTED, NOW CHECK SUB FILES
347347RECOVER $ FILE FLAG FROM INITIALIZATION
348348ORIGINAL DISK NUMBER IS IN C
34934900 BECOMES 01, FF BECOMES 00! ORA C ;OR DISK NUMBER
350350ACCUMULATOR CONTAINS 00 IF ON DISK 0, AND $ FILE PRESENT
351351OTHERWISE, THE ACCUMULATOR CONTAINS A NON-ZERO VALUE
354354ENTER HERE ON EACH COMMAND OR ERROR CONDITION
356356PRINT D> PROMPT, WHERE D IS DISK NAME
359359DEFAULT DMA ADDRESS IS AT BUFF
361361THE NAME CANNOT BE AN AMBIGUOUS REFERENCE
363363CHECK FOR AN INTRINSIC FUNCTION
365365INDEX IS IN THE ACCUMULATOR
366366INDEX IN D,E
368368PC CHANGES TO THE PROPER INTRINSIC OR USER FUNCTION
369
427
369
427
DIRECTORY SEARCH
370370FILE ERASE
371371TYPE FILE
372372SAVE MEMORY IMAGE
373373FILE RENAME
374374USER-DEFINED FUNCTION
378378UTILITY SUBROUTINES FOR INTRINSIC HANDLERS
379379PRINT THE READ ERROR MESSAGE
381381READ ERROR$
383383PRINT NO FILE MESSAGE
385385NOT FOUND$
387387CONVERT THE BYTE VALUE IN COMFCB TO BINARY
388388(B=0, C=11)
389389VALUE ACCUMULATED IN B, C COUNTS NAME LENGTH TO ZER0
391391MORE TO SCAN, CONVERT CHAR TO BINARY AND ADD
392392VALID?
393393SAVE VALUE! MOV A,B ;MULT BY 10
395395RECOVER VALUE
398398*8+*2 = *10
399399+DIGIT
400400FOR ANOTHER DIGIT
402402END OF DIGITS, CHECK FOR ALL BLANKS
403403BLANKS?
405405RECOVER VALUE! RET
407407MOVE 3 CHARACTERS FROM H,L TO D,E ADDRESSES
413413BUFF + A + C TO H,L FOLLOWED BY FETCH
416416CHANGE DISKS FOR THIS COMMAND, IF REQUESTED
417417CLEAR DISK NAME FROM FCB
418418NO ACTION IF NOT SPECIFIED
419419ALREADY SELECTED
421421RETURN TO ORIGINAL DISK AFTER COMMAND
422422NO ACTION IF NOT SELECTED
423423SAME DISK
426426INDIVIDUAL INTRINSICS FOLLOW
428428COMFCB GETS FILE NAME
429429CHANGE DISK DRIVES IF REQUESTED
430430MAY BE EMPTY REQUEST
431431SKIP FILL OF ??? IF NOT 8LANK
432432SET COMFCB TO ALL ??? FOR CURRENT DISK
433433LENGTH OF FILL ????????,???
435435NOT A BLANK REQUEST, MUST BE IN COMFCB
436436FIRST ONE HAS BEEN FOUND
437437NOT FOUND MESSAGE
440440ANOTHER FCB FOUND, PRINT PROMPT
444444COMPUTE POSITION OF NAME IN BUFFER
445445GET THE LOCATION OF THE ELEMENT
447447C CONTAINS BASE INDEX INTO BUFF FOR DIR ENTRY
448448START WITH FIRST CHARACTER OF NAME
449449BUFF+A+C FETCHED
450450DELETE TRAILING BLANKS
451451CHECK FOR BLANK TYPE
452452FIRST CHAR OF TYPE
453453TERMINATE
454454CHAR PRINTED
456456CHECK FOR BREAK BETWEEN NAMES
457457FOR ANOTHER CHAR
458458PRINT A BLANK BETWEEN NAMES
461461END OF CURRENT ENTRY
462462CHECK FOR INTERRUPT AT KEYBOARD
463463ABORT DIRECTORY SEARCH
464464FOR ANOTHER ENTRY
465465END OF DIRECTORY SCAN
469469CANNOT BE ALL ???'S
472472ERASING ALL OF THE DISK
475475BAD INPUT
477477OK, ERASE THE ENTIRE DISKETTE
478478OTHERWISE ERROR AT RETCOM
485485ALL FILES (Y/N)?$
488488DON'T ALLOW ?'S IN FILE NAME
489
524
489
524
OPEN THE FILE
490490ZERO FLAG INDICATES NOT FOUND
491491FILE OPENED, READ 'TIL EOF
492492READ FIRST BUFFER
493493LOOP ON BPTR
494494END BUFFER
495495CARRY IF B, 1,...,127
496496READ ANOTHER BUFFER FULL
497497RECOVER ADDRESS CF BPTR
498498HARD END OF FILE
499499BPTR = 0
500500READ CHARACTER AT BPTR AND PRINT
501501BPTR = BPTR + 1
502502H,L ADDRESSES CHAR
505505ABORT IF BREAK
508508END OF FILE, CHECK FOR ERRORS
513513SHOULD BE NUMBER
514514CANNOT BE PREFIXED
515515RESULTING VALUE IN REGISTER A
516516SAVE IT FOR LATER
518518SHOULD BE FOLLOWED BY A FILE TO SAVE THE MEMORY IMAGE
520520CANNOT BE AMBIGUOUS
521521MAY BE A DISK CHANGE
522522EXISTING FILE REMOV
523523CREATE A NEW FILE ON DISK
525525NO DIRECTORY SPACE
526526#PAGES TO WRITE IS IN A, CHANGE TO #SECTORS
528528H,L IS SECTOR COUNT, D,E IS LOAD ADDRESS
529529CHECK FOR SECTOR COUNT ZERO
530530MAY BE COMPLETED
531531SECTOR COUNT = SECTOR COUNT - 1
532532SAVE IT FOR NEXT TIME AROUND
533533NEXT DMA ADDRESS SAVED
534534CURRENT DMA ADDRESS SET
536536DMA ADDRESS, SECTOR COUNT
537537MAY BE DISK FULL CASE
538
606
538
606
FOR ANOTHER SECTOR
540540MUST BE FULL DISK
542542END OF DUMP, CLOSE THE FILE
544544OTHERWISE CANNOT CLOSE FILE
547547NO SPACE$
548548CANNOT CLOSE$
549549RENAME A FILE ON A SPECIFIC DISK
550550MUST BE UNAMBIGUOUS
551551SAVE FOR LATER COMPARE
552552DISK SELECTED
553553IS NEW NAME ALREADY THERE?
555555FILE DOESN'T EXIST, MOVE TO SECOND HALF OF FCB
557557CHECK FOR = OR LEFT ARROW
559559OK IF =
561561PAST DELIMITER
562562PROPER DELIMITER FOUND
564564CHECK FOR DRIVE CONFLICT
565565PREVIOUS DRIVE NUMBER
567567DRIVE NAME WAS SPECIFIED, SAME ONE?
569569STORE THE NAME IN CASE DRIVES SWITCHED
570570IS OLD FILE THERE?
573573EVERYTHING IS OK, ;RENAME THE FILE
577577NO FILE ON DISK
579579AMBIGUOUS REFERENCE/NAME CONFLICT
581581FILE ALREADY EXISTS
583583FILE EXISTS$
586586LOAD USER FUNCTION, AND SET UP FOR EXECLUSION
588588NO FILE NAME, BUT MAY BE DISK SWITCH
589589NO DISK NAME IF 0
592592FILE NAME IS PRESENT
593593TYPE ' '
594
643
594
643
COM
595595FILE TYPE IS SET TO COM
597597FILE OPENED PROPERLY, READ IT INTO MEMORY
598598TRANSIENT PROGRAM BASE
599599SAVE DMA ADDRESS
602602SECTOR LOADED, SET NEW DMA ADDRESS AND COMPARE
604604HAS THE LOAD OVERFLOWED?
608608END FILE IS 1
609609BACK TO ORIGINAL DISK
611611DRIVE NUMBER SET
612612MOVE ENTIRE FCB TO MEMO
614614RECORD NUMBER SET TO ZERO
616616MOVE COMMAND LINE TO BUFF
619619FOR ANOTHER SCAN
620620FIRST BLANK POSITION FOUND
621621READV FOR THE MOVE
623623MORE TO MOVE
625625B HAS CHARACTER COUNT
628628NOW GO TO THE LOADED PROGRAM
629629CURRENT DISK AT DISKA
631631GONE TO THE LOADED PROGRAM
632632MAY COME BACK HERE
636636ARRIVE HERE ON COMMAND ERROR
639639CANNOT LOAD THE PROGRAM
642642LOAD ERROR$
643643FOR COM FILES
646646RESET DISK BEFORE END OF COMMAND CHECK
649649END OF INTRINSIC COMMAND
650650TO CHECK FOR GARBAGE AT END OF LINE
6526520 IN ACCUMULATOR IF NO DISK SELECTED, AND BLANK FCB
658658DATA AREAS
6596598 LEVEL STACK
662662'SUBMIT' FILE CONTROL BLOCK
66366300 IF NO SUBMIT FILE, FF IF SUBMITTING
664664$$$
664664F1LE NAME IS $$$
665665SUB
665665FILE TYPE IS SUB
666666RECORD COUNT FILED
667667DISK MAP
670670COMMAND FILE CONTROL BLOCK
671671FIELDS FILLED IN LATER
672672CURRENT RECORD TO READ/WRITE
674
677
674
677
COMMAND BUFFER
675675MAX BUFFER LENGTH
676676COMMAND LENGTH (FILLED IN BY DOS)
678678ADDRESS OF NEXT TO SCAN
679679STARTING ADDRESS OF CURRENT F1LLFCB REQUEST
681681DISK DIRECTORY COUNT (USED FOR ERROR CODES)
682682CURRENT DISK
683683SELECTED DISK FOR CURRENT OPERATION
684684NONE=0, A=1, B=2 ...
685685BUFFER POINTER

to top

Matching Instruction Sequences
File1 Line# File2 Line# Number of matching instructions
2 2 876

to top

Matching Identifiers
0000B 0004H 0005H 005CH 0080H 0FFH 10 100H
11 110 1110 12 128 13 14 1400H
15 16 17 18 19 1AH 20 21
22 23 24 25 255 26 32 33
5FH 61H 78H 8000H 800H 81000H 900H ADDH
ADDHCF BADSERIAL BDOS BDOSL BIAS BMOVE0 BMOVE1 BMOVE2
BMOVE3 BPTR BREAK BREAKF BUFF CCP CCPLOC CCPSTART
CDISK CHECKSUB CLOSE CLOSEF CLOSMSG COM COMADDR COMBUF
COMERR COMERR0 COMERR1 COMFCB COMLEN COMREC COMTYPE CONV0
CONV1 CONVERT CPENF CR CRLF CSELECT CSELF DCHT
DCNT DEBLANK DEL DELETE DELF DELIM DIR0 DIR1
DIR2 DIR3 DIR4 DIR5 DIRECT DISKA DISKREAD DISKREADC
DISKWRITE DMAF DREADF DWRITF EFILL EFILL0 ENDCOM ENDIR
EOFILE ERASE ERASEFILE ERMSG FALSE FCB FILLFCB FILLFCB0
FILLFGB0 FULLMSG HL HLT IHR INITF INITIALIZE INK
INTLEN INTRIN0 INTRIN1 INTRIN2 INTRIN3 INTRINSIC INTVEC JMPTAB
KEY LA LF LIFTF LIFTHEAD LOAD0 LOAD1 LOADERR
LOADMSG LOGF MAKE MAKEF MAXLEN MOVE MOVE0 MOVENAME
NAM1 NDISKS NOFILE NOFMSG NOREAD NOSUB OPEN OPENC
OPENF PADNAME PADTY PBUFF PCHARF PGUFF PRINT PRINTBC
PRINTCHAR RBUFF RCHARF RDMSG READCOM READCOM0 READCOM1 READERR
REN1 REN2 RENAM RENAME RENERR1 RENERR2 RENERR3 RENF
RENMSG RESETDISK RETCOM SAVE SAVE0 SAVE1 SAVE2 SAVERR
SCNQ SCNQ0 SDISK SDOS SEARCH SEARCHCOM SEARCHN SEARF
SEARNF SELECT SELF SER0 SERB SERIAL SERIALIZE SETCUR
SETCUR0 SETDISK SETDMA SETDSK SETNAM0 SETNAM1 SETNAM2 SETNAME
SETSUB SETSUB0 SETTY SETTY0 SETTY1 SETTY2 SPTR STACK
STADDR SUBCR SUBFCB SUBMIT SUBRC TAB TESTING TRAN
TRANM TRANSLATE TRNAME TRTYP TRUE TYPE TYPE0 TYPE1
TYPEOF TYPERR USER0 USERER USERFUNC

to top

Partially Matching Identifiers
*** NONE ***
to the top
SCORE 100

CodeSuite copyright 2003-2016 by Software Analysis and Forensic Engineering Corporation